/**
 * 工具组件 对原有的工具进行封装，自定义某方法统一处理
 */
;
(function() {
    ly = {};
    ly.ajax = (function(params) {
        var pp = {
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                layer.open({
                    type : 1,
                    title : "出错啦！",
                    area : [ '95%', '95%' ],
                    content : "<div id='layerError' style='color:red'>" + XMLHttpRequest.responseText + "</div>"
                });
            }
        };
        $.extend(pp, params);
        $.ajax(pp);
    });
    
    ly.ajaxSubmit = (function(form, params) {// form 表单ID. params ajax参数
        var pp = {
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                layer.open({
                    type : 1,
                    title : "出错啦！",
                    area : [ '95%', '95%' ],
                    content : "<div id='layerError' style='color:red'>" + XMLHttpRequest.responseText + "</div>"
                });
            }
        };
        $.extend(pp, params);
        $(form).ajaxSubmit(pp);
    });
    
    CommnUtil = {
        /**
         * ajax同步请求 返回一个html内容 dataType=html. 默认为html格式 如果想返回json.
         * CommnUtil.ajax(url, data,"json")
         * 
         */
        ajax : function(url, data, dataType) {
            if (!CommnUtil.notNull(dataType)) {
                dataType = "html";
            }
            var html = '没有结果!';
            // 所以AJAX都必须使用ly.ajax..这里经过再次封装,统一处理..同时继承ajax所有属性
            if (url.indexOf("?") > -1) {
                url = url + "&_t=" + new Date();
            } else {
                url = url + "?_t=" + new Date();
            }
            ly.ajax({
                type : "post",
                data : data,
                url : url,
                dataType : dataType,// 这里的dataType就是返回回来的数据格式了html,xml,json
                async : false,
                traditional : true,
                cache : false,// 设置是否缓存，默认设置成为true，当需要每次刷新都需要执行数据库操作的话，需要设置成为false
                success : function(data) {
                    html = data;
                }
            });
            return html;
        },
        /**
         * 判断某对象不为空..返回true 否则 false
         */
        notNull : function(obj) {
            if (obj === null) {
                return false;
            } else if (obj === undefined) {
                return false;
            } else if (obj === "undefined") {
                return false;
            } else if (obj === "") {
                return false;
            } else if (obj === "[]") {
                return false;
            } else if (obj === "{}") {
                return false;
            } else {
                return true;
            }
        },

        /**
         * 判断某对象不为空..返回obj 否则 ""
         */
        notEmpty : function(obj) {
            if (obj === null) {
                return "";
            } else if (obj === undefined) {
                return "";
            } else if (obj === "undefined") {
                return "";
            } else if (obj === "") {
                return "";
            } else if (obj === "[]") {
                return "";
            } else if (obj === "{}") {
                return "";
            } else {
                return obj;
            }
        },
        
        loadingImg : function() {
            var html = '<div class="alert alert-warning">'
                    + '<button type="button" class="close" data-dismiss="alert">'
                    + '<i class="ace-icon fa fa-times"></i></button><div style="text-align:center">' + '<img src="'
                    + rootPath + '/images/loading.gif"/><div>' + '</div>';
            return html;
        },
        
        /**
         * html标签转义
         */
        htmlspecialchars : function(str) {
            var s = "";
            if (str.length == 0)
                return "";
            for (var i = 0; i < str.length; i++) {
                switch (str.substr(i, 1)) {
                case "<":
                    s += "&lt;";
                    break;
                case ">":
                    s += "&gt;";
                    break;
                case "&":
                    s += "&amp;";
                    break;
                case " ":
                    if (str.substr(i + 1, 1) == " ") {
                        s += " &nbsp;";
                        i++;
                    } else
                        s += " ";
                    break;
                case "\"":
                    s += "&quot;";
                    break;
                case "\n":
                    s += "";
                    break;
                default:
                    s += str.substr(i, 1);
                    break;
                }
            }
        },
        
        /**
         * in_array判断一个值是否在数组中
         */
        in_array : function(array, string) {
            for (var s = 0; s < array.length; s++) {
                thisEntry = array[s].toString();
                if (thisEntry == string) {
                    return true;
                }
            }
            return false;
        }
    };
})();

// 表单json格式化方法……不使用&拼接
(function($) {
    $.fn.serializeJson = function() {
        var serializeObj = {};
        var array = this.serializeArray();
        $(array).each(function() {
            if (serializeObj[this.name]) {
                if ($.isArray(serializeObj[this.name])) {
                    serializeObj[this.name].push(this.value);
                } else {
                    serializeObj[this.name] = [ serializeObj[this.name], this.value ];
                }
            } else {
                serializeObj[this.name] = this.value;
            }
        });
        return serializeObj;
    };
    Date.prototype.format = function(format) {
        var o = {
            "M+" : this.getMonth() + 1, // month
            "d+" : this.getDate(), // day
            "h+" : this.getHours(), // hour
            "m+" : this.getMinutes(), // minute
            "s+" : this.getSeconds(), // second
            "q+" : Math.floor((this.getMonth() + 3) / 3), // quarter
            "S" : this.getMilliseconds()
        // millisecond
        };
        if (/(y+)/.test(format)) {
            format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        }
        for ( var k in o) {
            if (new RegExp("(" + k + ")").test(format)) {
                format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k])
                        .substr(("" + o[k]).length));
            }
        }
        return format;
    };
})(jQuery);